@OneToOne, @OneToMany, @ManyToMany অ্যানোটেশন এর ব্যবহার

Java Technologies - স্প্রিং বুট জেপিএ (Spring Boot JPA) - Entity Relationships (One-to-One, One-to-Many, Many-to-Many)
319

স্প্রিং বুট জেপিএ (Spring Boot JPA) হল একটি শক্তিশালী ফ্রেমওয়ার্ক যা ডাটাবেস সম্পর্ক (relationship) ম্যানেজ করতে সাহায্য করে। JPA আপনাকে বিভিন্ন ধরনের সম্পর্ক তৈরি করতে দেয়, যেমন One-to-One, One-to-Many, এবং Many-to-Many। এই সম্পর্কগুলো ডাটাবেস টেবিলগুলোর মধ্যে বিভিন্ন ধরনের সম্পর্ক নির্ধারণ করে এবং JPA অ্যানোটেশন যেমন @OneToOne, @OneToMany, এবং @ManyToMany এর মাধ্যমে এটি সহজেই পরিচালনা করা যায়।

নিচে প্রতিটি সম্পর্কের জন্য বিস্তারিত আলোচনা এবং ব্যবহার উদাহরণ দেয়া হলো।


১. @OneToOne সম্পর্ক

@OneToOne সম্পর্ক তখন ব্যবহৃত হয় যখন একটি Entity অন্য একটি Entity-র সাথে একটি একক সম্পর্ক ভাগ করে। এক্ষেত্রে, দুটি Entity একে অপরের সাথে একেকটি রেকর্ডের মধ্যে সম্পর্কিত থাকে। এটি সাধারণত foreign key সম্পর্কের মাধ্যমে তৈরি হয়।

উদাহরণ:

ধরা যাক, Person এবং Passport দুটি Entity ক্লাস রয়েছে, যেখানে প্রতিটি Person-এর একটি Passport থাকে এবং একে অপরের সাথে একক সম্পর্ক ভাগ করে।

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class Person {

    @Id
    private Long id;
    private String name;

    @OneToOne
    private Passport passport;

    // getters and setters
}
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Passport {

    @Id
    private Long id;
    private String passportNumber;

    // getters and setters
}

এখানে, Person Entity এর মধ্যে passport একটি @OneToOne সম্পর্ক, যা Passport Entity এর সাথে একটি একক সম্পর্ক তৈরি করেছে।

ডাটাবেস স্কিমা:

ডাটাবেসে, Person টেবিলের মধ্যে passport_id নামে একটি ফিল্ড থাকবে, যা Passport টেবিলের id এর সাথে সম্পর্কিত থাকবে।


২. @OneToMany সম্পর্ক

@OneToMany সম্পর্ক ব্যবহৃত হয় যখন একটি Entity একাধিক Entity এর সাথে সম্পর্কিত থাকে। উদাহরণস্বরূপ, একটি Department Entity এর একাধিক Employee থাকতে পারে। এটি সাধারণত foreign key ব্যবহার করে একটি একক Entity কে একাধিক Entity এর সাথে সম্পর্কিত করে।

উদাহরণ:

ধরা যাক, Department এবং Employee Entity ক্লাসের মধ্যে একটি One-to-Many সম্পর্ক রয়েছে, যেখানে একটি ডিপার্টমেন্টে একাধিক কর্মচারী (Employee) থাকতে পারে।

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Department {

    @Id
    private Long id;
    private String name;

    @OneToMany(mappedBy = "department")
    private List<Employee> employees;

    // getters and setters
}
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Employee {

    @Id
    private Long id;
    private String name;

    @ManyToOne
    private Department department;

    // getters and setters
}

এখানে, Department Entity তে @OneToMany ব্যবহার করা হয়েছে, যা Employee Entity এর একাধিক অবজেক্টের সাথে সম্পর্ক স্থাপন করে। mappedBy অ্যাট্রিবিউটটি স্পষ্ট করে দেয় যে সম্পর্কটি কোন Entity ক্লাসের মধ্যে নির্ধারিত হবে (এখানে Employee ক্লাসে department ফিল্ডের মাধ্যমে সম্পর্ক স্থাপিত হয়েছে)।

ডাটাবেস স্কিমা:

ডাটাবেসে, Employee টেবিলে department_id নামে একটি ফিল্ড থাকবে, যা Department টেবিলের id এর সাথে সম্পর্কিত থাকবে।


৩. @ManyToMany সম্পর্ক

@ManyToMany সম্পর্ক ব্যবহৃত হয় যখন দুটি Entity একে অপরের সাথে একাধিক সম্পর্ক ভাগ করে। এই ধরনের সম্পর্ক সাধারণত join table ব্যবহার করে সম্পন্ন হয়। উদাহরণস্বরূপ, একটি Student Entity এর একাধিক Course থাকতে পারে এবং একটি Course এর একাধিক Student থাকতে পারে।

উদাহরণ:

ধরা যাক, Student এবং Course Entity ক্লাসের মধ্যে একটি Many-to-Many সম্পর্ক রয়েছে, যেখানে এক ছাত্রের একাধিক কোর্স থাকতে পারে এবং একটি কোর্সে একাধিক ছাত্র থাকতে পারে।

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import java.util.List;

@Entity
public class Student {

    @Id
    private Long id;
    private String name;

    @ManyToMany
    private List<Course> courses;

    // getters and setters
}
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import java.util.List;

@Entity
public class Course {

    @Id
    private Long id;
    private String name;

    @ManyToMany(mappedBy = "courses")
    private List<Student> students;

    // getters and setters
}

এখানে, Student Entity তে @ManyToMany অ্যানোটেশন ব্যবহার করা হয়েছে, যা Course Entity এর একাধিক অবজেক্টের সাথে সম্পর্ক স্থাপন করে। mappedBy অ্যাট্রিবিউটটি নির্ধারণ করে যে এই সম্পর্কটি কোন Entity ক্লাসে প্রতিষ্ঠিত হবে (এখানে Student ক্লাসের courses ফিল্ডের মাধ্যমে সম্পর্ক স্থাপন হয়েছে)।

ডাটাবেস স্কিমা:

ডাটাবেসে, একটি join table তৈরি হবে যা student_id এবং course_id এর মাধ্যমে Student এবং Course টেবিলগুলির মধ্যে সম্পর্ক স্থাপন করবে।


সারাংশ

JPA-এর @OneToOne, @OneToMany, এবং @ManyToMany অ্যানোটেশনগুলি আপনাকে ডাটাবেস টেবিলগুলির মধ্যে সম্পর্ক সহজে তৈরি করতে সাহায্য করে।

  • @OneToOne সম্পর্ক একটি Entity কে অন্য একটি Entity এর সাথে একক সম্পর্ক স্থাপন করতে ব্যবহৃত হয়।
  • @OneToMany সম্পর্ক এক Entity কে একাধিক Entity এর সাথে সম্পর্কিত করতে ব্যবহৃত হয়।
  • @ManyToMany সম্পর্ক দুইটি Entity কে একাধিক সম্পর্কের মাধ্যমে সংযুক্ত করতে ব্যবহৃত হয় এবং সাধারণত একটি join table ব্যবহার করা হয়।

এই অ্যানোটেশনগুলি ডাটাবেস স্কিমা ডিজাইনকে সহজ করে এবং জাভা অ্যাপ্লিকেশনে ডাটাবেস সম্পর্ক ব্যবস্থাপনায় আরও দক্ষতা আনতে সাহায্য করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...